﻿using BusinessEntities;
using BusinessLayer.ParticipacionVecinal;
using ParticipacionVecinalWeb.Models;
using ParticipacionVecinalWeb.Models.ParticipacionVecinal;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace ParticipacionVecinalWeb.Controllers.ParticipacionVecinal {
    public class IniciativaVecinalController : Controller {
        //
        // GET: /IniciativaVecinal/

        public ActionResult Index() {
            return View();
        }


        #region "Busqueda de Iniciativa Vecinal"

        public JsonResult ListaBusquedaIV(int Pagina, int Paginacion, String feini, String fefin, String estado, String descripcion) {

            var parametros = new Parametros();
            DateTime FeInicio = new DateTime(1900, 1, 1);
            DateTime FeFin = new DateTime(1900, 1, 1);
            int IdEstado = 0;
            bool fl = false;

            if (!DateTime.TryParse(feini, out FeInicio)) {
                FeInicio = new DateTime(1900, 1, 1);
            }
            if (!DateTime.TryParse(fefin, out FeFin)) {
                FeFin = DateTime.Now.AddDays(7);
            }
            if (!int.TryParse(estado, out  IdEstado)) {
                IdEstado = 0;
            }

            parametros.Pagina = Pagina;
            parametros.Paginacion = Paginacion;
            parametros.IdCombo = IdEstado;
            parametros.FeInicio = FeInicio;
            parametros.FeFin = FeFin;
            parametros.Texto = descripcion;


            IniciativaVecinalBL bl = new IniciativaVecinalBL();

            var lstIV = bl.ListaIniciativa(parametros);
            /********************************************************/
            // public List<IVConsulta> ListaIniciativa(Parametros oParametros) {
            var lst = new List<IV>();

            int total = 0;
            if (lstIV != null && lstIV.Count > 0) {

                lst = (from x in lstIV
                       select new IV {
                           A = x.Id,
                           C = x.Codigo,
                           R = x.NombreDelegado,
                           DE = x.Descripcion,
                           E = x.Estado,
                           S = x.SubSector
                       }).ToList();
                total = lstIV[0].Total;
            }



            var strList = new {
                data = lst,
                total = total
            };
            var vjson = Json(strList, JsonRequestBehavior.AllowGet);
            vjson.MaxJsonLength = int.MaxValue;

            return vjson;

        }


        #endregion

        #region "Registro de Iniciativa Vecinal"

        public ActionResult IV(int Id) {
            IV oIV = new IV();

            Models.UsuarioPV Usuario = new Models.UsuarioPV();// Esto se remplaza por sesion de usuario.
            Usuario = Usuario.GetUsuario();
            oIV.R = Usuario.Nombre;
            oIV.S = Usuario.Sector;
            oIV.SE = Usuario.Subsector;
            oIV.V = new List<R>();

            if (Id != null && Id > 0) {
                oIV.ID = Id;
                IniciativaVecinalBL oIVBus = new IniciativaVecinalBL();
                VecinoBL oVecino = new VecinoBL();
                var Iniciativa = oIVBus.Get(Id);
                if (Iniciativa != null) {

                    oIV.C = Iniciativa.Codigo;
                    oIV.FE = Iniciativa.FeRegistro.Value.ToString("dd/MM/yyyy");
                    oIV.HO = Iniciativa.FeRegistro.Value.ToString("HH:mm");
                    oIV.D = Iniciativa.Descripcion;
                    oIV.DE = Iniciativa.DetalleIV;

                    var lstVecino = oVecino.List(oIV.ID);
                    if (lstVecino != null && lstVecino.Count > 0) {
                        oIV.V = (from x in lstVecino select new R { ID = x.Id, N = x.NroDoc, AP = x.Nombre, AM = x.Direccion }).ToList();
                    }
                }
                //Buscar Iniciativa Vecinal : 
            }

            return View(oIV);
        }


        public JsonResult SaveIV(IV oIV) {
            UsuarioPV oUusario = new UsuarioPV();
            var Usuario = oUusario.GetUsuario();
            PVecinal_IniciativaVecinal oIni = new PVecinal_IniciativaVecinal();
            IniciativaVecinalBL oIVBus = new IniciativaVecinalBL();
            VecinoBL oVecinoBus = new VecinoBL();
            DateTime feRegistro = new DateTime(1900, 1, 1);

            if (!String.IsNullOrEmpty(oIV.FE)) {
                if (DateTime.TryParse(oIV.FE, out feRegistro)) {
                    if (!String.IsNullOrEmpty(oIV.C) && oIV.C.Length > 4) { //"hh:mm"
                        int hora = 0, min = 0;
                        String xx = oIV.C.Substring(0, 2);
                        String xxx = oIV.C.Substring(3, 2);
                        int.TryParse(oIV.C.Substring(0, 2), out hora);
                        int.TryParse(oIV.C.Substring(3, 2), out min);
                        feRegistro.AddHours(hora);
                        feRegistro.AddMinutes(min);
                    }
                }
            }

            oIni.Descripcion = (!String.IsNullOrEmpty(oIV.S)) ? oIV.S : "";
            oIni.DetalleIV = (!String.IsNullOrEmpty(oIV.DET)) ? oIV.DET : "";
            oIni.FeRegistro = feRegistro;
            /****************************************************/
            oIni.IdEstado = 1;//Pendiente por defecto
            oIni.IdResponsable = Usuario.Id;
            oIni.IdDelegadoVecinal = Usuario.Id;
            oIni.IdSubSector = Usuario.IdSubsector;
            /****************************************************/

            oIni = oIVBus.Save(oIni);

            if (oIni.Id > 0) {
                //Registro de Vecinos :  //1 #0 #45096684 #CINTHIA CECILIA    ANGULO MARRUJO #|
                //IV.SE = strVecino;
                var lstVecino = oIV.SE.Split('|');
                if (lstVecino != null && lstVecino.Length > 0) {
                    foreach (var det in lstVecino) {
                        var datos = det.Split('#');
                        if (datos != null && datos.Length > 0) {

                            String dni = (datos.Length >= 2) ? datos[2] : "";
                            String nombre = (datos.Length >= 3) ? datos[3] : "";
                            String direccion = (datos.Length >= 4) ? datos[4] : "";

                            if (dni != "" && nombre != "") {
                                oVecinoBus.Save(new PVecinal_Vecino { IdTipo = oIni.Id, NroDoc = dni, Nombre = nombre, Direccion = direccion });

                            }
                        }

                    }
                }
            }
            oIV.ID = oIni.Id;
            oIV.C = oIni.Codigo;
            var vjson = Json(oIV, JsonRequestBehavior.AllowGet);
            vjson.MaxJsonLength = int.MaxValue;
            return vjson;
        }

        public JsonResult Update(IV oIV) {
            UsuarioPV oUusario = new UsuarioPV();
            var Usuario = oUusario.GetUsuario();
            PVecinal_IniciativaVecinal oIni = new PVecinal_IniciativaVecinal();
            IniciativaVecinalBL oIVBus = new IniciativaVecinalBL();
            VecinoBL oVecinoBus = new VecinoBL();
            DateTime feRegistro = new DateTime(1900, 1, 1);

            if (!String.IsNullOrEmpty(oIV.FE)) {
                if (DateTime.TryParse(oIV.FE, out feRegistro)) {
                    if (!String.IsNullOrEmpty(oIV.C) && oIV.C.Length > 4) { //"hh:mm"
                        int hora = 0, min = 0;
                        String xx = oIV.C.Substring(0, 2);
                        String xxx = oIV.C.Substring(3, 2);
                        int.TryParse(oIV.C.Substring(0, 2), out hora);
                        int.TryParse(oIV.C.Substring(3, 2), out min);
                        feRegistro.AddHours(hora);
                        feRegistro.AddMinutes(min);
                    }
                }
            }

            oIni.Id = oIV.ID;
            oIni.Descripcion = (!String.IsNullOrEmpty(oIV.S)) ? oIV.S : "";
            oIni.DetalleIV = (!String.IsNullOrEmpty(oIV.DET)) ? oIV.DET : "";
            oIni.FeRegistro = feRegistro;
            /****************************************************/
            oIni.IdEstado = 1;//Pendiente por defecto
            oIni.IdResponsable = Usuario.Id;
            oIni.IdDelegadoVecinal = Usuario.Id;
            oIni.IdSubSector = Usuario.IdSubsector;
            /****************************************************/

            oIni = oIVBus.Update(oIni);

            if (oIni.Id > 0) {
                //Registro de Vecinos :  //1 #0 #45096684 #CINTHIA CECILIA    ANGULO MARRUJO #|
                //IV.SE = strVecino;
                oVecinoBus.DeleteAll(oIni.Id);
                var lstVecino = oIV.SE.Split('|');
                if (lstVecino != null && lstVecino.Length > 0) {
                    foreach (var det in lstVecino) {
                        var datos = det.Split('#');
                        if (datos != null && datos.Length > 0) {

                            String dni = (datos.Length >= 2) ? datos[2] : "";
                            String nombre = (datos.Length >= 3) ? datos[3] : "";
                            String direccion = (datos.Length >= 4) ? datos[4] : "";

                            if (dni != "" && nombre != "") {
                                oVecinoBus.Save(new PVecinal_Vecino { IdTipo = oIni.Id, NroDoc = dni, Nombre = nombre, Direccion = direccion });

                            }
                        }

                    }
                }
            }
            oIV.ID = oIni.Id;
            oIV.C = oIni.Codigo;
            var vjson = Json(oIV, JsonRequestBehavior.AllowGet);
            vjson.MaxJsonLength = int.MaxValue;
            return vjson;
        }



        #endregion

        #region "Buscar Vecino"

        public JsonResult ListaBusquedaVecino(int Pagina, int Paginacion, String nombre, String tipodoc, String nrodoc) {
            //http://localhost:5623/api/Vecino?texto=&doc=&tipo=0&pagina=1&paginacion=10
            //UrlServicio
            var parametros = new Parametros();
            int intTipo = 0;
            bool fl = false;

            if (!int.TryParse(tipodoc, out  intTipo)) {
                intTipo = 0;
            }

            parametros.Pagina = Pagina;
            parametros.Paginacion = Paginacion;
            parametros.Texto = nombre;
            parametros.IdCombo = intTipo;
            parametros.Codigo = nrodoc;

            Utils bl = new Utils();
            var lstIV = bl.getVecinos(parametros);

            //--------------------------------------------
            int total = lstIV.Count();
            var strList = new {
                data = lstIV,
                total = total
            };
            var vjson = Json(strList, JsonRequestBehavior.AllowGet);
            vjson.MaxJsonLength = int.MaxValue;
            return vjson;

        }

        #endregion
    }
}
